#ifndef __RAYTRACER_PIXEL_TYPE_H__
#define __RAYTRACER_PIXEL_TYPE_H__

#include <libgfl.h>

namespace raytracer {

template<size_t NbChannels,GFL_BITMAP_TYPE ColorModel>
class pixel_t
{
   public:

      static size_t channels();
      static GFL_BITMAP_TYPE gflColorModel();
};

template<size_t NbChannels,GFL_BITMAP_TYPE ColorModel>
size_t pixel_t<NbChannels,ColorModel>::channels()
{
   return NbChannels;
}

template<size_t NbChannels,GFL_BITMAP_TYPE ColorModel>
GFL_COLORMODEL pixel_t<NbChannels,ColorModel>::gflColorModel()
{
   return ColorModel;
}

class rgb_t : public pixel_t<3,GFL_RGB> {};

} //end of namespace

#endif //__RAYTRACER_PIXEL_TYPE_H__
